package com.tencent.wxpay.protocol.response;

import com.tencent.wxpay.protocol.model.Refund;

import java.io.Serializable;
import java.util.List;

/**
 * 申请退款接口返回数据对象
 */
public class RefundResData extends BaseResData implements Serializable {
    private static final long serialVersionUID = -2142850741796946573L;
    //协议返回的具体数据（以下字段在return_code 为SUCCESS 的时候有返回）
    /**
     * 设备号
     * 必填：否
     * 描述：微信支付分配的终端设备号
     */
    private String device_info;
    /**
     * 微信订单号
     * 必填：是
     * 描述：微信生成的订单号
     */
    private String transaction_id;
    /**
     * 商户订单号
     * 必填：是
     * 描述：商户系统内部的订单号
     */
    private String out_trade_no;
    /**
     * 商户退款单号
     * 必填：是
     * 描述：商户退款单号
     */
    private String out_refund_no;
    /**
     * 微信退款单号
     * 必填：是
     * 描述：微信退款单号
     */
    private String refund_id;
    /**
     * 退款渠道
     * 必填：否
     * 描述：ORIGINAL—原路退款
     * BALANCE—退回到余额
     */
    private String refund_channel;
    /**
     * 申请退款金额
     * 必填：是
     * 描述：退款总金额,单位为分,可以做部分退款
     */
    private Integer refund_fee;
    /**
     * 退款金额
     * 必填：否
     * 描述：去掉非充值代金券退款金额后的退款金额，退款金额=申请退款金额-非充值代金券退款金额，退款金额<=申请退款金额
     */
    private Integer settlement_refund_fee;
    /**
     * 订单金额
     * 必填：是
     * 描述：订单总金额，单位为分，只能为整数，详见<a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_2">支付金额</a>
     */
    private Integer total_fee;
    /**
     * 应结订单金额
     * 必填：否
     * 描述：去掉非充值代金券金额后的订单总金额，应结订单金额=订单金额-非充值代金券金额，应结订单金额<=订单金额。
     */
    private Integer settlement_total_fee;
    /**
     * 订单金额货币种类
     * 必填：否
     * 描述：订单金额货币类型，符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见<a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_2">货币类型</a>
     */
    private String fee_type;
    /**
     * 现金支付金额
     * 必填：是
     * 描述：现金支付金额，单位为分，只能为整数，详见<a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_2">支付金额</a>
     */
    private Integer cash_fee;
    /**
     * 现金退款金额
     * 必填：否
     * 描述：现金退款金额，单位为分，只能为整数，详见<a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_2">支付金额</a>
     */
    private Integer cash_refund_fee;
    /**
     * 退款代金券列表
     * 必填：否
     * 描述：退款代金券列表
     */
    private List<Refund> refunds;

    public String getDevice_info() {
        return device_info;
    }

    public void setDevice_info(String device_info) {
        this.device_info = device_info;
    }

    public String getTransaction_id() {
        return transaction_id;
    }

    public void setTransaction_id(String transaction_id) {
        this.transaction_id = transaction_id;
    }

    public String getOut_trade_no() {
        return out_trade_no;
    }

    public void setOut_trade_no(String out_trade_no) {
        this.out_trade_no = out_trade_no;
    }

    public String getOut_refund_no() {
        return out_refund_no;
    }

    public void setOut_refund_no(String out_refund_no) {
        this.out_refund_no = out_refund_no;
    }

    public String getRefund_id() {
        return refund_id;
    }

    public void setRefund_id(String refund_id) {
        this.refund_id = refund_id;
    }

    public String getRefund_channel() {
        return refund_channel;
    }

    public void setRefund_channel(String refund_channel) {
        this.refund_channel = refund_channel;
    }

    public Integer getRefund_fee() {
        return refund_fee;
    }

    public void setRefund_fee(Integer refund_fee) {
        this.refund_fee = refund_fee;
    }

    public Integer getSettlement_refund_fee() {
        return settlement_refund_fee;
    }

    public void setSettlement_refund_fee(Integer settlement_refund_fee) {
        this.settlement_refund_fee = settlement_refund_fee;
    }

    public Integer getTotal_fee() {
        return total_fee;
    }

    public void setTotal_fee(Integer total_fee) {
        this.total_fee = total_fee;
    }

    public Integer getSettlement_total_fee() {
        return settlement_total_fee;
    }

    public void setSettlement_total_fee(Integer settlement_total_fee) {
        this.settlement_total_fee = settlement_total_fee;
    }

    public String getFee_type() {
        return fee_type;
    }

    public void setFee_type(String fee_type) {
        this.fee_type = fee_type;
    }

    public Integer getCash_fee() {
        return cash_fee;
    }

    public void setCash_fee(Integer cash_fee) {
        this.cash_fee = cash_fee;
    }

    public Integer getCash_refund_fee() {
        return cash_refund_fee;
    }

    public void setCash_refund_fee(Integer cash_refund_fee) {
        this.cash_refund_fee = cash_refund_fee;
    }

    public List<Refund> getRefunds() {
        return refunds;
    }

    public void setRefunds(List<Refund> refunds) {
        this.refunds = refunds;
    }
}
